# logging_config.py
import os
import logging
import logging.handlers

from config import config_xxl_job


def setup_logger(log_file='./logs/app.log', max_size_mb=5, backup_count=5):
    os.makedirs(config_xxl_job["log_local_dir"], exist_ok=True)

    # 获取 logger 实例
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)  # 设置全局日志级别

    # 如果 logger 已经配置过 handler，先移除避免重复
    if logger.handlers:
        logger.handlers.clear()

    # 创建 RotatingFileHandler，控制日志文件大小和个数
    log_handler = logging.handlers.RotatingFileHandler(
        filename=log_file,
        maxBytes=max_size_mb * 1024 * 1024,  # 文件大小限制（MB 转换为字节）
        backupCount=backup_count  # 保留的日志文件个数
    )

    # 设置日志格式
    log_format = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    log_handler.setFormatter(log_format)

    # 添加 handler 到 logger
    logger.addHandler(log_handler)

    # 可选：添加控制台输出
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(log_format)
    logger.addHandler(console_handler)

# 自动调用
setup_logger()
